from django.urls import path, include
from . import views, views_serializer, views_apiview, views_genericapiview, views_mixinview, views_childview, \
    views_viewset

# DRF提供的视图集自动生成路由类
from rest_framework.routers import SimpleRouter,DefaultRouter

# 初始化生成路由类对象
router = DefaultRouter()
# 路由的注册生成 第一个参数路由前缀 第二个参数调用的视图类 第三个参数 路由命名
router.register('viewsetbooks', views_viewset.BooksView, basename='books')
# 获取路由结果 需要将生成的路由添加到urlpatterns路由列表中
# print(router.urls)

urlpatterns = [
    # 匹配接口请求路径
    # path('books/',views.BooksView.as_view()),
    # path('books/<int:id>/', views.BookView.as_view()),

    # 序列化器的使用
    path('books/', views_serializer.BooksView.as_view()),
    path('books/<int:id>/', views_serializer.BookView.as_view()),
    # 英雄数据处理
    path('heros/', views_serializer.HerosView.as_view()),
    path('heros/<int:id>/', views_serializer.HeroView.as_view()),

    # -----------------------APIView的使用--------------------------
    path('apibooks/', views_apiview.BooksView.as_view()),
    path('apibooks/<int:id>/', views_apiview.BookView.as_view()),

    # -----------------------GenericAPIView的使用--------------------------
    path('gapibooks/', views_genericapiview.BooksView.as_view()),
    path('gapibooks/<int:pk>/', views_genericapiview.BookView.as_view()),
    # 如果使用视图中的get_object方法必须匹配值为pk值

    #  -----------------------拓展类的使用--------------------------
    path('mixinbooks/', views_mixinview.BooksView.as_view()),
    path('mixinbooks/<int:pk>/', views_mixinview.BookView.as_view()),

    #  -----------------------拓展类子类的使用--------------------------
    path('childbooks/', views_childview.BooksView.as_view()),
    path('childbooks/<int:pk>/', views_childview.BookView.as_view()),

    #  -----------------------视图集的使用--------------------------
    # 视图集中可以通过字典的键值对形式将请求方式对应的方法绑定在一起
    # path('viewsetbooks/', views_viewset.BooksView.as_view({'post': 'create', 'get': 'list'})),
    # path('viewsetbooks/<int:pk>/', views_viewset.BooksView.as_view({'get': 'retrieve', 'put': 'update'})),
    # path('viewsetbooks/last_book/', views_viewset.BooksView.as_view({'get': 'last_book'})),
    # path('', include(router.urls))

]
# urlpatterns.append(router.urls)
urlpatterns += router.urls
# print(urlpatterns)
